home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGMISC / MODULTUB.LZH / COROUT.MOD < prev    next >
Text File  |  1989-01-18  |  2KB  |  63 lines

  1.                                         (* Chapter 15 - Program 1 *)
  2. MODULE Corout;
  3.  
  4. FROM InOut IMPORT WriteCard, WriteString, WriteLn;
  5.  
  6. FROM SYSTEM IMPORT WORD, PROCESS, ADR, SIZE,
  7.                    NEWPROCESS, TRANSFER;
  8.  
  9. VAR  main, Process1, Process2 : PROCESS;
  10.      WorkSpace1, WorkSpace2   : ARRAY[1..300] OF WORD;
  11.  
  12. PROCEDURE MainProcess;
  13.    VAR   Index : CARDINAL;
  14. BEGIN
  15.    FOR Index := 1 TO 5 DO
  16.       WriteString('This is loop');
  17.       WriteCard(Index,2);
  18.       IF Index > 2 THEN
  19.          TRANSFER(Process1,Process2);
  20.          WriteString(' and back to main loop');
  21.       END;
  22.       WriteLn;
  23.    END;     (* of FOR loop *)
  24.    WriteString('End of the MainProcess loop');
  25.    WriteLn;
  26.    TRANSFER(Process1,main);
  27. END MainProcess;
  28.  
  29. PROCEDURE SubProcess;
  30. BEGIN
  31.    LOOP
  32.       WriteString(' in SubProcess');
  33.       TRANSFER(Process2,Process1);
  34.       WriteString(' back');
  35.    END;
  36. END SubProcess;
  37.  
  38. BEGIN   (* Main Module Body *)
  39.    NEWPROCESS(MainProcess,ADR(WorkSpace1),SIZE(WorkSpace1),
  40.               Process1);
  41.    NEWPROCESS(SubProcess,ADR(WorkSpace2),SIZE(WorkSpace2),
  42.               Process2);
  43.    TRANSFER(main,Process1);
  44.    WriteString('End of the program');
  45.    WriteLn;
  46. END Corout.
  47.  
  48.  
  49.  
  50.  
  51. (* Result of execution
  52.  
  53. This is loop 1
  54. This is loop 2
  55. This is loop 3 in SubProcess and back to main loop
  56. This is loop 4 back in SubProcess and back to main loop
  57. This is loop 5 back in SubProcess and back to main loop
  58. End of the MainProcess loop
  59. End of the program
  60.  
  61. *)
  62.  
  63.